using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

////////////////////////////////////////////////////////////////////////////////////////////////////
// namespace: Dimok.Data.DataSources
//
// summary:	.
////////////////////////////////////////////////////////////////////////////////////////////////////

namespace Dimok.Data.DataSources {

	////////////////////////////////////////////////////////////////////////////////////////////////////
	/// <summary>	A function data source. </summary>
	///
	/// <remarks>	Dimon, 12/21/2010. </remarks>
	////////////////////////////////////////////////////////////////////////////////////////////////////

	public abstract class AFunctionDataSource : AObjectDataSourceBase{

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets a value indicating whether this object use no lock. </summary>
		///
		/// <value>	true if use no lock, false if not. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public override bool UseNoLock { get { return false; } }
		string _selectViewName = "";

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets or sets the name of the select view. </summary>
		///
		/// <value>	The name of the select view. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public override string SelectViewName {
			get { return _selectViewName; }
			set { _selectViewName = value; }
		}
		string _insertViewName = "";

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Gets or sets the name of the insert view. </summary>
		///
		/// <value>	The name of the insert view. </value>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public override string InsertViewName {
			get { return _insertViewName; }
			set { _insertViewName = value; }
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Executes the object created action. </summary>
		///
		/// <param name="sender">	Source of the event. </param>
		/// <param name="e">			Event information to send to registered event handlers. </param>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		protected override void OnObjectCreated(object sender, ObjectDataSourceEventArgs e) {
			base.OnObjectCreated(sender, e);
			AFunctionDataSource me = e.ObjectInstance as AFunctionDataSource;
			me.SelectViewName = SelectViewName;
			me.InsertViewName = InsertViewName;
			me.UpdateViewName = UpdateViewName;
			me.DeleteViewName = DeleteViewName;
			me.SelectIDFieldName = SelectIDFieldName;
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Default constructor. </summary>
		///
		/// <remarks>	Dimon, 12/21/2010. </remarks>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public AFunctionDataSource() {
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Select ex. </summary>
		///
		/// <param name="ID">	The identifier. </param>
		///
		/// <returns>	. </returns>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public override DataView SelectEx(int ID) {
			return Select("", ID);
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Select ex. </summary>
		///
		/// <param name="Param1">	The first parameter. </param>
		/// <param name="Param2">	The second parameter. </param>
		///
		/// <returns>	. </returns>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public DataView SelectEx(object Param1, object Param2) {
			return Select("", Param1, Param2);
		}

		////////////////////////////////////////////////////////////////////////////////////////////////////
		/// <summary>	Select ex. </summary>
		///
		/// <param name="Param1">	The first parameter. </param>
		/// <param name="Param2">	The second parameter. </param>
		/// <param name="Param3">	The third parameter. </param>
		///
		/// <returns>	. </returns>
		////////////////////////////////////////////////////////////////////////////////////////////////////

		public DataView SelectEx(object Param1, object Param2, object Param3) {
			return Select("", Param1, Param2,Param3);
		}
	}
}